const UserModel = require('../model/UserModel');

/**
 * 用户验证中间件
 * 验证URL中的username参数对应的用户是否存在
 * 如果用户存在，将用户信息挂载到req.targetUser
 */
const userAuth = async (req, res, next) => {
    try {
        const { username } = req.params;

        if (!username) {
            return res.status(400).send({
                code: 400,
                message: '缺少用户名参数'
            });
        }

        // 查找用户（支持用户名、昵称或ID查找）
        const user = await UserModel.findOne({
            $or: [
                { username: username },
                { nickname: username },
                { _id: username }
            ]
        });

        if (!user) {
            return res.status(404).send({
                code: 404,
                message: '用户不存在，请检查用户名是否正确'
            });
        }

        // 将用户信息挂载到请求对象，供后续控制器使用
        req.targetUser = user;
        next();
    } catch (error) {
        console.error('用户验证中间件错误:', error);
        res.status(500).send({
            code: 500,
            message: '服务器内部错误'
        });
    }
};

module.exports = userAuth;
